/**
  @file     	Computer.h 
  @brief    	all kinds of Computer
  @author  	arvin
  @version 	1.0   2012/12/20
 */
#include "stdafx.h"


#ifndef CXX_COMPUTER_H
#include "Computer.h"
#endif

#ifndef CXX_MOUSE_H
#include "Mouse.h"
#endif

#ifndef CXX_KEYBOARD_H
#include "Keyboard.h"
#endif

#ifndef CXX_MONITOR_H
#include "Monitor.h"
#endif

#ifndef CXX_HOST_H
#include "Host.h"
#endif

/**
* Construction
*
* @param VOID
* @return 
*/
AbstractComputer::AbstractComputer(COMPUTER_TYPE eComputer) :
	m_eComputer(eComputer)
{
	DEBUG_PRINTF("m_eComputer[%d], Computer[%s]", m_eComputer, STATIC_CONST_STRING_COMPUTER[m_eComputer].c_str());
}

/**
* Destruction
*
* @param VOID
* @return 
*/
AbstractComputer::~AbstractComputer()
{
	DEBUG_PRINTF("m_eComputer[%d], Computer[%s]", m_eComputer, STATIC_CONST_STRING_COMPUTER[m_eComputer].c_str());
}

/**
* Operation
*
* @param VOID
* @return 
*/
VOID 
AbstractComputer::Operation()
{
	DEBUG_PRINTF("m_eComputer[%d], Computer[%s]", m_eComputer, STATIC_CONST_STRING_COMPUTER[m_eComputer].c_str());
}

/**
* SetComputer
*
* @param COMPUTER_TYPE eComputer
* @return
*/
VOID AbstractComputer::SetComputer(COMPUTER_TYPE eComputer)
{
	DEBUG_PRINTF("m_eComputer[%d], Computer[%s]", m_eComputer, STATIC_CONST_STRING_COMPUTER[m_eComputer].c_str());
	m_eComputer = eComputer;
}

/**
* GetComputer
*
* @param VOID
* @return COMPUTER_TYPE
*/
COMPUTER_TYPE 
AbstractComputer::GetComputer()
{
	DEBUG_PRINTF("m_eComputer[%d], Computer[%s]", m_eComputer, STATIC_CONST_STRING_COMPUTER[m_eComputer].c_str());
	return m_eComputer;
}

/**
* Construction
*
* @param COMPUTERPART_TYPE eComputerPart
* @return
*/
NotebookComputer::NotebookComputer(COMPUTERPART_TYPE eComputerPart) :
	AbstractComputer(COMPUTER_NOTEBOOK),
	m_eComputerPart(eComputerPart)
{
	DEBUG_PRINTF("m_eComputerPart[%d], ComputerPart[%s]", m_eComputerPart, STATIC_CONST_STRING_COMPUTERPART[m_eComputerPart].c_str());
}

/**
* Construction
*
* @param COMPUTERPART_TYPE eComputerPart
* @param const vector<Mouse*>& vMouse
* @param const vector<Keyboard*>& vKeyboard
* @param const vector<Monitor*>& vMonitor
* @param const vector<Host*>& vHost
* @return
*/
NotebookComputer::NotebookComputer(COMPUTERPART_TYPE eComputerPart, const vector<Mouse*>& vMouse, const vector<Keyboard*>& vKeyboard, const vector<Monitor*>& vMonitor, const vector<Host*>& vHost) :
	AbstractComputer(COMPUTER_NOTEBOOK),
	m_eComputerPart(eComputerPart),
	m_vMouse(vMouse),
	m_vKeyboard(vKeyboard),
	m_vMonitor(vMonitor),
	m_vHost(vHost)
{

}

/**
* Destruction
*
* @param VOID
* @return
*/
NotebookComputer::~NotebookComputer()
{
	DEBUG_PRINTF("m_eComputerPart[%d], ComputerPart[%s]", m_eComputerPart, STATIC_CONST_STRING_COMPUTERPART[m_eComputerPart].c_str());
	for (unsigned int i = 0; i < m_vMouse.size(); i++) {
		if (NULL != m_vMouse[i]) {
			delete m_vMouse[i];
			m_vMouse[i] = NULL;
		}
	}
	for (unsigned int i = 0; i < m_vKeyboard.size(); i++) {
		if (NULL != m_vKeyboard[i]) {
			delete m_vKeyboard[i];
			m_vKeyboard[i] = NULL;
		}
	}
	for (unsigned int i = 0; i < m_vMonitor.size(); i++) {
		if (NULL != m_vMonitor[i]) {
			delete m_vMonitor[i];
			m_vMonitor[i] = NULL;
		}
	}
	for (unsigned int i = 0; i < m_vHost.size(); i++) {
		if (NULL != m_vHost[i]) {
			delete m_vHost[i];
			m_vHost[i] = NULL;
		}
	}
}

/**
* Operation
*
* @param VOID
* @return
*/
VOID
NotebookComputer::Operation()
{
	DEBUG_PRINTF("m_eComputerPart[%d], ComputerPart[%s]", m_eComputerPart, STATIC_CONST_STRING_COMPUTERPART[m_eComputerPart].c_str());
	AbstractComputer::Operation();
	for (unsigned int i = 0; i < m_vMouse.size(); i++) {
		if (NULL != m_vMouse[i]) {
			m_vMouse[i]->Operation();
		}
	}
	for (unsigned int i = 0; i < m_vKeyboard.size(); i++) {
		if (NULL != m_vKeyboard[i]) {
			m_vKeyboard[i]->Operation();
		}
	}
	for (unsigned int i = 0; i < m_vMonitor.size(); i++) {
		if (NULL != m_vMonitor[i]) {
			m_vMonitor[i]->Operation();
		}
	}
	for (unsigned int i = 0; i < m_vHost.size(); i++) {
		if (NULL != m_vHost[i]) {
			m_vHost[i]->Operation();
		}
	}
}

/**
* SetComputerPart
*
* @param COMPUTERPART_TYPE eComputerPart
* @return
*/
VOID
NotebookComputer::SetComputerPart(COMPUTERPART_TYPE eComputerPart)
{
	DEBUG_PRINTF("m_eComputerPart[%d], ComputerPart[%s]", m_eComputerPart, STATIC_CONST_STRING_COMPUTERPART[m_eComputerPart].c_str());
	m_eComputerPart = eComputerPart;
}

/**
* GetComputerPart
*
* @param VOID
* @return COMPUTERPART_TYPE
*/
COMPUTERPART_TYPE
NotebookComputer::GetComputerPart()
{
	DEBUG_PRINTF("m_eComputerPart[%d], ComputerPart[%s]", m_eComputerPart, STATIC_CONST_STRING_COMPUTERPART[m_eComputerPart].c_str());
	return m_eComputerPart;
}


/**
* SetMouse
*
* @param const vector<Mouse*>& vMouse
* @return
*/
VOID
NotebookComputer::SetMouse(const vector<Mouse*>& vMouse)
{
	DEBUG_PRINTF("m_eComputerPart[%d], ComputerPart[%s]", m_eComputerPart, STATIC_CONST_STRING_COMPUTERPART[m_eComputerPart].c_str());
	m_vMouse = vMouse;
}

/**
* GetMouse
*
* @param const vector<Mouse*>&
* @return
*/
const vector<Mouse*>&
NotebookComputer::GetMouse()
{
	DEBUG_PRINTF("m_eComputerPart[%d], ComputerPart[%s]", m_eComputerPart, STATIC_CONST_STRING_COMPUTERPART[m_eComputerPart].c_str());
	return m_vMouse;
}

/**
* SetKeyboard
*
* @param const vector<Keyboard*>& vKeyboard
* @return
*/
VOID
NotebookComputer::SetKeyboard(const vector<Keyboard*>& vKeyboard)
{
	DEBUG_PRINTF("m_eComputerPart[%d], ComputerPart[%s]", m_eComputerPart, STATIC_CONST_STRING_COMPUTERPART[m_eComputerPart].c_str());
	m_vKeyboard = vKeyboard;
}

/**
* GetKeyboard
*
* @param const vector<Keyboard*>&
* @return
*/
const vector<Keyboard*>&
NotebookComputer::GetKeyboard()
{
	DEBUG_PRINTF("m_eComputerPart[%d], ComputerPart[%s]", m_eComputerPart, STATIC_CONST_STRING_COMPUTERPART[m_eComputerPart].c_str());
	return m_vKeyboard;
}

/**
* SetMonitor
*
* @param const vector<Monitor*>& vMonitor
* @return
*/
VOID
NotebookComputer::SetMonitor(const vector<Monitor*>& vMonitor)
{
	DEBUG_PRINTF("m_eComputerPart[%d], ComputerPart[%s]", m_eComputerPart, STATIC_CONST_STRING_COMPUTERPART[m_eComputerPart].c_str());
	m_vMonitor = vMonitor;
}

/**
* GetMonitor
*
* @param const vector<Monitor*>&
* @return
*/
const vector<Monitor*>&
NotebookComputer::GetMonitor()
{
	DEBUG_PRINTF("m_eComputerPart[%d], ComputerPart[%s]", m_eComputerPart, STATIC_CONST_STRING_COMPUTERPART[m_eComputerPart].c_str());
	return m_vMonitor;
}

/**
* SetHost
*
* @param const vector<Host*>& vHost
* @return
*/
VOID
NotebookComputer::SetHost(const vector<Host*>& vHost)
{
	DEBUG_PRINTF("m_eComputerPart[%d], ComputerPart[%s]", m_eComputerPart, STATIC_CONST_STRING_COMPUTERPART[m_eComputerPart].c_str());
	m_vHost = vHost;
}

/**
* GetHost
*
* @param const vector<Host*>&
* @return
*/
const vector<Host*>&
NotebookComputer::GetHost()
{
	DEBUG_PRINTF("m_eComputerPart[%d], ComputerPart[%s]", m_eComputerPart, STATIC_CONST_STRING_COMPUTERPART[m_eComputerPart].c_str());
	return m_vHost;
}

/**
* Construction
*
* @param COMPUTERPART_TYPE eComputerPart
* @return
*/
DesktopComputer::DesktopComputer(COMPUTERPART_TYPE eComputerPart) :
	AbstractComputer(COMPUTER_DESKTOP),
	m_eComputerPart(eComputerPart)
{
	DEBUG_PRINTF("m_eComputerPart[%d], ComputerPart[%s]", m_eComputerPart, STATIC_CONST_STRING_COMPUTERPART[m_eComputerPart].c_str());
}

/**
* Construction
*
* @param COMPUTERPART_TYPE eComputerPart
* @param const vector<Mouse*>& vMouse
* @param const vector<Keyboard*>& vKeyboard
* @param const vector<Monitor*>& vMonitor
* @param const vector<Host*>& vHost
* @return
*/
DesktopComputer::DesktopComputer(COMPUTERPART_TYPE eComputerPart, const vector<Mouse*>& vMouse, const vector<Keyboard*>& vKeyboard, const vector<Monitor*>& vMonitor, const vector<Host*>& vHost) :
	AbstractComputer(COMPUTER_DESKTOP),
	m_eComputerPart(eComputerPart),
	m_vMouse(vMouse),
	m_vKeyboard(vKeyboard),
	m_vMonitor(vMonitor),
	m_vHost(vHost)
{

}

/**
* Destruction
*
* @param VOID
* @return
*/
DesktopComputer::~DesktopComputer()
{
	DEBUG_PRINTF("m_eComputerPart[%d], ComputerPart[%s]", m_eComputerPart, STATIC_CONST_STRING_COMPUTERPART[m_eComputerPart].c_str());
	for (unsigned int i = 0; i < m_vMouse.size(); i++) {
		if (NULL != m_vMouse[i]) {
			delete m_vMouse[i];
			m_vMouse[i] = NULL;
		}
	}
	for (unsigned int i = 0; i < m_vKeyboard.size(); i++) {
		if (NULL != m_vKeyboard[i]) {
			delete m_vKeyboard[i];
			m_vKeyboard[i] = NULL;
		}
	}
	for (unsigned int i = 0; i < m_vMonitor.size(); i++) {
		if (NULL != m_vMonitor[i]) {
			delete m_vMonitor[i];
			m_vMonitor[i] = NULL;
		}
	}
	for (unsigned int i = 0; i < m_vHost.size(); i++) {
		if (NULL != m_vHost[i]) {
			delete m_vHost[i];
			m_vHost[i] = NULL;
		}
	}
}

/**
* Operation
*
* @param VOID
* @return
*/
VOID
DesktopComputer::Operation()
{
	DEBUG_PRINTF("m_eComputerPart[%d], ComputerPart[%s]", m_eComputerPart, STATIC_CONST_STRING_COMPUTERPART[m_eComputerPart].c_str());
	AbstractComputer::Operation();
	for (unsigned int i = 0; i < m_vMouse.size(); i++) {
		if (NULL != m_vMouse[i]) {
			m_vMouse[i]->Operation();
		}
	}
	for (unsigned int i = 0; i < m_vKeyboard.size(); i++) {
		if (NULL != m_vKeyboard[i]) {
			m_vKeyboard[i]->Operation();
		}
	}
	for (unsigned int i = 0; i < m_vMonitor.size(); i++) {
		if (NULL != m_vMonitor[i]) {
			m_vMonitor[i]->Operation();
		}
	}
	for (unsigned int i = 0; i < m_vHost.size(); i++) {
		if (NULL != m_vHost[i]) {
			m_vHost[i]->Operation();
		}
	}
}

/**
* SetComputerPart
*
* @param COMPUTERPART_TYPE eComputerPart
* @return
*/
VOID
DesktopComputer::SetComputerPart(COMPUTERPART_TYPE eComputerPart)
{
	DEBUG_PRINTF("m_eComputerPart[%d], ComputerPart[%s]", m_eComputerPart, STATIC_CONST_STRING_COMPUTERPART[m_eComputerPart].c_str());
	m_eComputerPart = eComputerPart;
}

/**
* GetComputerPart
*
* @param VOID
* @return COMPUTERPART_TYPE
*/
COMPUTERPART_TYPE
DesktopComputer::GetComputerPart()
{
	DEBUG_PRINTF("m_eComputerPart[%d], ComputerPart[%s]", m_eComputerPart, STATIC_CONST_STRING_COMPUTERPART[m_eComputerPart].c_str());
	return m_eComputerPart;
}

/**
* SetMouse
*
* @param const vector<Mouse*>& vMouse
* @return
*/
VOID 
DesktopComputer::SetMouse(const vector<Mouse*>& vMouse)
{
	DEBUG_PRINTF("m_eComputerPart[%d], ComputerPart[%s]", m_eComputerPart, STATIC_CONST_STRING_COMPUTERPART[m_eComputerPart].c_str());
	m_vMouse = vMouse;
}

/**
* GetMouse
*
* @param const vector<Mouse*>&
* @return
*/
const vector<Mouse*>& 
DesktopComputer::GetMouse()
{
	DEBUG_PRINTF("m_eComputerPart[%d], ComputerPart[%s]", m_eComputerPart, STATIC_CONST_STRING_COMPUTERPART[m_eComputerPart].c_str());
	return m_vMouse;
}

/**
* SetKeyboard
*
* @param const vector<Keyboard*>& vKeyboard
* @return
*/
VOID
DesktopComputer::SetKeyboard(const vector<Keyboard*>& vKeyboard)
{
	DEBUG_PRINTF("m_eComputerPart[%d], ComputerPart[%s]", m_eComputerPart, STATIC_CONST_STRING_COMPUTERPART[m_eComputerPart].c_str());
	m_vKeyboard = vKeyboard;
}

/**
* GetKeyboard
*
* @param const vector<Keyboard*>&
* @return
*/
const vector<Keyboard*>&
DesktopComputer::GetKeyboard()
{
	DEBUG_PRINTF("m_eComputerPart[%d], ComputerPart[%s]", m_eComputerPart, STATIC_CONST_STRING_COMPUTERPART[m_eComputerPart].c_str());
	return m_vKeyboard;
}

/**
* SetMonitor
*
* @param const vector<Monitor*>& vMonitor
* @return
*/
VOID
DesktopComputer::SetMonitor(const vector<Monitor*>& vMonitor)
{
	DEBUG_PRINTF("m_eComputerPart[%d], ComputerPart[%s]", m_eComputerPart, STATIC_CONST_STRING_COMPUTERPART[m_eComputerPart].c_str());
	m_vMonitor = vMonitor;
}

/**
* GetMonitor
*
* @param const vector<Monitor*>&
* @return
*/
const vector<Monitor*>&
DesktopComputer::GetMonitor()
{
	DEBUG_PRINTF("m_eComputerPart[%d], ComputerPart[%s]", m_eComputerPart, STATIC_CONST_STRING_COMPUTERPART[m_eComputerPart].c_str());
	return m_vMonitor;
}

/**
* SetHost
*
* @param const vector<Host*>& vHost
* @return
*/
VOID
DesktopComputer::SetHost(const vector<Host*>& vHost)
{
	DEBUG_PRINTF("m_eComputerPart[%d], ComputerPart[%s]", m_eComputerPart, STATIC_CONST_STRING_COMPUTERPART[m_eComputerPart].c_str());
	m_vHost = vHost;
}

/**
* GetHost
*
* @param const vector<Host*>&
* @return
*/
const vector<Host*>&
DesktopComputer::GetHost()
{
	DEBUG_PRINTF("m_eComputerPart[%d], ComputerPart[%s]", m_eComputerPart, STATIC_CONST_STRING_COMPUTERPART[m_eComputerPart].c_str());
	return m_vHost;
}

/**
* Construction
*
* @param COMPUTERPART_TYPE eComputerPart
* @return
*/
ServerComputer::ServerComputer(COMPUTERPART_TYPE eComputerPart) :
	AbstractComputer(COMPUTER_SERVER),
	m_eComputerPart(eComputerPart)
{
	DEBUG_PRINTF("m_eComputerPart[%d], ComputerPart[%s]", m_eComputerPart, STATIC_CONST_STRING_COMPUTERPART[m_eComputerPart].c_str());
}

/**
* Construction
*
* @param COMPUTERPART_TYPE eComputerPart
* @param const vector<Mouse*>& vMouse
* @param const vector<Keyboard*>& vKeyboard
* @param const vector<Monitor*>& vMonitor
* @param const vector<Host*>& vHost
* @return
*/
ServerComputer::ServerComputer(COMPUTERPART_TYPE eComputerPart, const vector<Mouse*>& vMouse, const vector<Keyboard*>& vKeyboard, const vector<Monitor*>& vMonitor, const vector<Host*>& vHost) :
	AbstractComputer(COMPUTER_SERVER),
	m_eComputerPart(eComputerPart),
	m_vMouse(vMouse),
	m_vKeyboard(vKeyboard),
	m_vMonitor(vMonitor),
	m_vHost(vHost)
{

}

/**
* Destruction
*
* @param VOID
* @return
*/
ServerComputer::~ServerComputer()
{
	DEBUG_PRINTF("m_eComputerPart[%d], ComputerPart[%s]", m_eComputerPart, STATIC_CONST_STRING_COMPUTERPART[m_eComputerPart].c_str());
	for (unsigned int i = 0; i < m_vMouse.size(); i++) {
		if (NULL != m_vMouse[i]) {
			delete m_vMouse[i];
			m_vMouse[i] = NULL;
		}
	}
	for (unsigned int i = 0; i < m_vKeyboard.size(); i++) {
		if (NULL != m_vKeyboard[i]) {
			delete m_vKeyboard[i];
			m_vKeyboard[i] = NULL;
		}
	}
	for (unsigned int i = 0; i < m_vMonitor.size(); i++) {
		if (NULL != m_vMonitor[i]) {
			delete m_vMonitor[i];
			m_vMonitor[i] = NULL;
		}
	}
	for (unsigned int i = 0; i < m_vHost.size(); i++) {
		if (NULL != m_vHost[i]) {
			delete m_vHost[i];
			m_vHost[i] = NULL;
		}
	}
}

/**
* Operation
*
* @param VOID
* @return
*/
VOID
ServerComputer::Operation()
{
	DEBUG_PRINTF("m_eComputerPart[%d], ComputerPart[%s]", m_eComputerPart, STATIC_CONST_STRING_COMPUTERPART[m_eComputerPart].c_str());
	AbstractComputer::Operation();
	for (unsigned int i = 0; i < m_vMouse.size(); i++) {
		if (NULL != m_vMouse[i]) {
			m_vMouse[i]->Operation();
		}
	}
	for (unsigned int i = 0; i < m_vKeyboard.size(); i++) {
		if (NULL != m_vKeyboard[i]) {
			m_vKeyboard[i]->Operation();
		}
	}
	for (unsigned int i = 0; i < m_vMonitor.size(); i++) {
		if (NULL != m_vMonitor[i]) {
			m_vMonitor[i]->Operation();
		}
	}
	for (unsigned int i = 0; i < m_vHost.size(); i++) {
		if (NULL != m_vHost[i]) {
			m_vHost[i]->Operation();
		}
	}
}

/**
* SetComputerPart
*
* @param COMPUTERPART_TYPE eComputerPart
* @return
*/
VOID
ServerComputer::SetComputerPart(COMPUTERPART_TYPE eComputerPart)
{
	DEBUG_PRINTF("m_eComputerPart[%d], ComputerPart[%s]", m_eComputerPart, STATIC_CONST_STRING_COMPUTERPART[m_eComputerPart].c_str());
	m_eComputerPart = eComputerPart;
}

/**
* GetComputerPart
*
* @param VOID
* @return COMPUTERPART_TYPE
*/
COMPUTERPART_TYPE
ServerComputer::GetComputerPart()
{
	DEBUG_PRINTF("m_eComputerPart[%d], ComputerPart[%s]", m_eComputerPart, STATIC_CONST_STRING_COMPUTERPART[m_eComputerPart].c_str());
	return m_eComputerPart;
}


/**
* SetMouse
*
* @param const vector<Mouse*>& vMouse
* @return
*/
VOID
ServerComputer::SetMouse(const vector<Mouse*>& vMouse)
{
	DEBUG_PRINTF("m_eComputerPart[%d], ComputerPart[%s]", m_eComputerPart, STATIC_CONST_STRING_COMPUTERPART[m_eComputerPart].c_str());
	m_vMouse = vMouse;
}

/**
* GetMouse
*
* @param const vector<Mouse*>&
* @return
*/
const vector<Mouse*>&
ServerComputer::GetMouse()
{
	DEBUG_PRINTF("m_eComputerPart[%d], ComputerPart[%s]", m_eComputerPart, STATIC_CONST_STRING_COMPUTERPART[m_eComputerPart].c_str());
	return m_vMouse;
}

/**
* SetKeyboard
*
* @param const vector<Keyboard*>& vKeyboard
* @return
*/
VOID
ServerComputer::SetKeyboard(const vector<Keyboard*>& vKeyboard)
{
	DEBUG_PRINTF("m_eComputerPart[%d], ComputerPart[%s]", m_eComputerPart, STATIC_CONST_STRING_COMPUTERPART[m_eComputerPart].c_str());
	m_vKeyboard = vKeyboard;
}

/**
* GetKeyboard
*
* @param const vector<Keyboard*>&
* @return
*/
const vector<Keyboard*>&
ServerComputer::GetKeyboard()
{
	DEBUG_PRINTF("m_eComputerPart[%d], ComputerPart[%s]", m_eComputerPart, STATIC_CONST_STRING_COMPUTERPART[m_eComputerPart].c_str());
	return m_vKeyboard;
}

/**
* SetMonitor
*
* @param const vector<Monitor*>& vMonitor
* @return
*/
VOID
ServerComputer::SetMonitor(const vector<Monitor*>& vMonitor)
{
	DEBUG_PRINTF("m_eComputerPart[%d], ComputerPart[%s]", m_eComputerPart, STATIC_CONST_STRING_COMPUTERPART[m_eComputerPart].c_str());
	m_vMonitor = vMonitor;
}

/**
* GetMonitor
*
* @param const vector<Monitor*>&
* @return
*/
const vector<Monitor*>&
ServerComputer::GetMonitor()
{
	DEBUG_PRINTF("m_eComputerPart[%d], ComputerPart[%s]", m_eComputerPart, STATIC_CONST_STRING_COMPUTERPART[m_eComputerPart].c_str());
	return m_vMonitor;
}

/**
* SetHost
*
* @param const vector<Host*>& vHost
* @return
*/
VOID
ServerComputer::SetHost(const vector<Host*>& vHost)
{
	DEBUG_PRINTF("m_eComputerPart[%d], ComputerPart[%s]", m_eComputerPart, STATIC_CONST_STRING_COMPUTERPART[m_eComputerPart].c_str());
	m_vHost = vHost;
}

/**
* GetHost
*
* @param const vector<Host*>&
* @return
*/
const vector<Host*>&
ServerComputer::GetHost()
{
	DEBUG_PRINTF("m_eComputerPart[%d], ComputerPart[%s]", m_eComputerPart, STATIC_CONST_STRING_COMPUTERPART[m_eComputerPart].c_str());
	return m_vHost;
}


/**
* Construction
*
* @param Mouse* pMouse
* @param Keyboard* pKeyboard
* @param Monitor* pMonitor
* @param Host* pHost
* @return
*/
NotebookComputerNormal::NotebookComputerNormal(Mouse* pMouse, Keyboard* pKeyboard, Monitor* pMonitor, Host* pHost) :
	NotebookComputer(COMPUTERPART_NORMAL)
{
	DEBUG_PRINTF("");
	vector<Mouse*> vMouse;
	vector<Keyboard*> vKeyboard;
	vector<Monitor*> vMonitor;
	vector<Host*> vHost;
	vMouse.push_back(pMouse);
	vKeyboard.push_back(pKeyboard);
	vMonitor.push_back(pMonitor);
	vHost.push_back(pHost);
}

/**
* Destruction
*
* @param VOID
* @return
*/
NotebookComputerNormal::~NotebookComputerNormal()
{
	DEBUG_PRINTF("");
}

/**
* Operation
*
* @param VOID
* @return
*/
VOID
NotebookComputerNormal::Operation()
{
	DEBUG_PRINTF("");
	NotebookComputer::Operation();
}

/**
* Construction
*
* @param Mouse* pMouse1
* @param Mouse* pMouse2
* @param Keyboard* pKeyboard
* @param Monitor* pMonitor
* @param Host* pHost
* @return
*/
NotebookComputerDoubleMouse::NotebookComputerDoubleMouse(Mouse* pMouse1, Mouse* pMouse2, Keyboard* pKeyboard, Monitor* pMonitor, Host* pHost) :
	NotebookComputer(COMPUTERPART_DOUBLEMOUSE)
{
	DEBUG_PRINTF("");
	vector<Mouse*> vMouse;
	vector<Keyboard*> vKeyboard;
	vector<Monitor*> vMonitor;
	vector<Host*> vHost;
	vMouse.push_back(pMouse1);
	vMouse.push_back(pMouse2);
	vKeyboard.push_back(pKeyboard);
	vMonitor.push_back(pMonitor);
	vHost.push_back(pHost);
	SetMouse(vMouse);
	SetKeyboard(vKeyboard);
	SetMonitor(vMonitor);
	SetHost(vHost);
}

/**
* Destruction
*
* @param VOID
* @return
*/
NotebookComputerDoubleMouse::~NotebookComputerDoubleMouse()
{
	DEBUG_PRINTF("");
}

/**
* Operation
*
* @param VOID
* @return
*/
VOID
NotebookComputerDoubleMouse::Operation()
{
	DEBUG_PRINTF("");
	NotebookComputer::Operation();
}

/**
* Construction
*
* @param Mouse* pMouse
* @param Keyboard* pKeyboard1
* @param Keyboard* pKeyboard2
* @param Monitor* pMonitor
* @param Host* pHost
* @return
*/
NotebookComputerDoubleKeyboard::NotebookComputerDoubleKeyboard(Mouse* pMouse, Keyboard* pKeyboard1, Keyboard* pKeyboard2, Monitor* pMonitor, Host* pHost) :
	NotebookComputer(COMPUTERPART_DOUBLEKEYBOARD)
{
	DEBUG_PRINTF("");
	vector<Mouse*> vMouse;
	vector<Keyboard*> vKeyboard;
	vector<Monitor*> vMonitor;
	vector<Host*> vHost;
	vMouse.push_back(pMouse);
	vKeyboard.push_back(pKeyboard1);
	vKeyboard.push_back(pKeyboard2);
	vMonitor.push_back(pMonitor);
	vHost.push_back(pHost);
	SetMouse(vMouse);
	SetKeyboard(vKeyboard);
	SetMonitor(vMonitor);
	SetHost(vHost);
}

/**
* Destruction
*
* @param VOID
* @return
*/
NotebookComputerDoubleKeyboard::~NotebookComputerDoubleKeyboard()
{
	DEBUG_PRINTF("");
}

/**
* Operation
*
* @param VOID
* @return
*/
VOID
NotebookComputerDoubleKeyboard::Operation()
{
	DEBUG_PRINTF("");
	NotebookComputer::Operation();
}

/**
* Construction
*
* @param Mouse* pMouse
* @param Keyboard* pKeyboard
* @param Monitor* pMonitor1
* @param Monitor* pMonitor2
* @param Host* pHost
* @return
*/
NotebookComputerDoubleMonitor::NotebookComputerDoubleMonitor(Mouse* pMouse, Keyboard* pKeyboard, Monitor* pMonitor1, Monitor* pMonitor2, Host* pHost) :
	NotebookComputer(COMPUTERPART_DOUBLEMONITOR)
{
	DEBUG_PRINTF("");
	vector<Mouse*> vMouse;
	vector<Keyboard*> vKeyboard;
	vector<Monitor*> vMonitor;
	vector<Host*> vHost;
	vMouse.push_back(pMouse);
	vKeyboard.push_back(pKeyboard);
	vMonitor.push_back(pMonitor1);
	vMonitor.push_back(pMonitor2);
	vHost.push_back(pHost);
	SetMouse(vMouse);
	SetKeyboard(vKeyboard);
	SetMonitor(vMonitor);
	SetHost(vHost);
}

/**
* Destruction
*
* @param VOID
* @return
*/
NotebookComputerDoubleMonitor::~NotebookComputerDoubleMonitor()
{
	DEBUG_PRINTF("");
}

/**
* Operation
*
* @param VOID
* @return
*/
VOID
NotebookComputerDoubleMonitor::Operation()
{
	DEBUG_PRINTF("");
	NotebookComputer::Operation();
}

/**
* Construction
*
* @param Mouse* pMouse
* @param Keyboard* pKeyboard
* @param Monitor* pMonitor
* @param Host* pHost
* @return
*/
DesktopComputerNormal::DesktopComputerNormal(Mouse* pMouse, Keyboard* pKeyboard, Monitor* pMonitor, Host* pHost) :
	DesktopComputer(COMPUTERPART_NORMAL)
{
	DEBUG_PRINTF("");
	vector<Mouse*> vMouse;
	vector<Keyboard*> vKeyboard;
	vector<Monitor*> vMonitor;
	vector<Host*> vHost;
	vMouse.push_back(pMouse);
	vKeyboard.push_back(pKeyboard);
	vMonitor.push_back(pMonitor);
	vHost.push_back(pHost);
}

/**
* Destruction
*
* @param VOID
* @return
*/
DesktopComputerNormal::~DesktopComputerNormal()
{
	DEBUG_PRINTF("");
}

/**
* Operation
*
* @param VOID
* @return
*/
VOID
DesktopComputerNormal::Operation()
{
	DEBUG_PRINTF("");
	DesktopComputer::Operation();
}

/**
* Construction
*
* @param Mouse* pMouse1
* @param Mouse* pMouse2
* @param Keyboard* pKeyboard
* @param Monitor* pMonitor
* @param Host* pHost
* @return
*/
DesktopComputerDoubleMouse::DesktopComputerDoubleMouse(Mouse* pMouse1, Mouse* pMouse2, Keyboard* pKeyboard, Monitor* pMonitor, Host* pHost) :
	DesktopComputer(COMPUTERPART_DOUBLEMOUSE)
{
	DEBUG_PRINTF("");
	vector<Mouse*> vMouse;
	vector<Keyboard*> vKeyboard;
	vector<Monitor*> vMonitor;
	vector<Host*> vHost;
	vMouse.push_back(pMouse1);
	vMouse.push_back(pMouse2);
	vKeyboard.push_back(pKeyboard);
	vMonitor.push_back(pMonitor);
	vHost.push_back(pHost);
	SetMouse(vMouse);
	SetKeyboard(vKeyboard);
	SetMonitor(vMonitor);
	SetHost(vHost);
}

/**
* Destruction
*
* @param VOID
* @return
*/
DesktopComputerDoubleMouse::~DesktopComputerDoubleMouse()
{
	DEBUG_PRINTF("");
}

/**
* Operation
*
* @param VOID
* @return
*/
VOID
DesktopComputerDoubleMouse::Operation()
{
	DEBUG_PRINTF("");
	DesktopComputer::Operation();
}

/**
* Construction
*
* @param Mouse* pMouse
* @param Keyboard* pKeyboard1
* @param Keyboard* pKeyboard2
* @param Monitor* pMonitor
* @param Host* pHost
* @return
*/
DesktopComputerDoubleKeyboard::DesktopComputerDoubleKeyboard(Mouse* pMouse, Keyboard* pKeyboard1, Keyboard* pKeyboard2, Monitor* pMonitor, Host* pHost) :
	DesktopComputer(COMPUTERPART_DOUBLEKEYBOARD)
{
	DEBUG_PRINTF("");
	vector<Mouse*> vMouse;
	vector<Keyboard*> vKeyboard;
	vector<Monitor*> vMonitor;
	vector<Host*> vHost;
	vMouse.push_back(pMouse);
	vKeyboard.push_back(pKeyboard1);
	vKeyboard.push_back(pKeyboard2);
	vMonitor.push_back(pMonitor);
	vHost.push_back(pHost);
	SetMouse(vMouse);
	SetKeyboard(vKeyboard);
	SetMonitor(vMonitor);
	SetHost(vHost);
}

/**
* Destruction
*
* @param VOID
* @return
*/
DesktopComputerDoubleKeyboard::~DesktopComputerDoubleKeyboard()
{
	DEBUG_PRINTF("");
}

/**
* Operation
*
* @param VOID
* @return
*/
VOID
DesktopComputerDoubleKeyboard::Operation()
{
	DEBUG_PRINTF("");
	DesktopComputer::Operation();
}

/**
* Construction
*
* @param Mouse* pMouse
* @param Keyboard* pKeyboard
* @param Monitor* pMonitor1
* @param Monitor* pMonitor2
* @param Host* pHost
* @return
*/
DesktopComputerDoubleMonitor::DesktopComputerDoubleMonitor(Mouse* pMouse, Keyboard* pKeyboard, Monitor* pMonitor1, Monitor* pMonitor2, Host* pHost) :
	DesktopComputer(COMPUTERPART_DOUBLEMONITOR)
{
	DEBUG_PRINTF("");
	vector<Mouse*> vMouse;
	vector<Keyboard*> vKeyboard;
	vector<Monitor*> vMonitor;
	vector<Host*> vHost;
	vMouse.push_back(pMouse);
	vKeyboard.push_back(pKeyboard);
	vMonitor.push_back(pMonitor1);
	vMonitor.push_back(pMonitor2);
	vHost.push_back(pHost);
	SetMouse(vMouse);
	SetKeyboard(vKeyboard);
	SetMonitor(vMonitor);
	SetHost(vHost);
}

/**
* Destruction
*
* @param VOID
* @return
*/
DesktopComputerDoubleMonitor::~DesktopComputerDoubleMonitor()
{
	DEBUG_PRINTF("");
}

/**
* Operation
*
* @param VOID
* @return
*/
VOID
DesktopComputerDoubleMonitor::Operation()
{
	DEBUG_PRINTF("");
	DesktopComputer::Operation();
}


/**
* Construction
*
* @param Mouse* pMouse
* @param Keyboard* pKeyboard
* @param Monitor* pMonitor
* @param Host* pHost
* @return
*/
ServerComputerNormal::ServerComputerNormal(Mouse* pMouse, Keyboard* pKeyboard, Monitor* pMonitor, Host* pHost) :
	ServerComputer(COMPUTERPART_NORMAL)
{
	DEBUG_PRINTF("");
	vector<Mouse*> vMouse;
	vector<Keyboard*> vKeyboard;
	vector<Monitor*> vMonitor;
	vector<Host*> vHost;
	vMouse.push_back(pMouse);
	vKeyboard.push_back(pKeyboard);
	vMonitor.push_back(pMonitor);
	vHost.push_back(pHost);
}

/**
* Destruction
*
* @param VOID
* @return
*/
ServerComputerNormal::~ServerComputerNormal()
{
	DEBUG_PRINTF("");
}

/**
* Operation
*
* @param VOID
* @return
*/
VOID
ServerComputerNormal::Operation()
{
	DEBUG_PRINTF("");
	ServerComputer::Operation();
}

/**
* Construction
*
* @param Mouse* pMouse1
* @param Mouse* pMouse2
* @param Keyboard* pKeyboard
* @param Monitor* pMonitor
* @param Host* pHost
* @return
*/
ServerComputerDoubleMouse::ServerComputerDoubleMouse(Mouse* pMouse1, Mouse* pMouse2, Keyboard* pKeyboard, Monitor* pMonitor, Host* pHost) :
	ServerComputer(COMPUTERPART_DOUBLEMOUSE)
{
	DEBUG_PRINTF("");
	vector<Mouse*> vMouse;
	vector<Keyboard*> vKeyboard;
	vector<Monitor*> vMonitor;
	vector<Host*> vHost;
	vMouse.push_back(pMouse1);
	vMouse.push_back(pMouse2);
	vKeyboard.push_back(pKeyboard);
	vMonitor.push_back(pMonitor);
	vHost.push_back(pHost);
	SetMouse(vMouse);
	SetKeyboard(vKeyboard);
	SetMonitor(vMonitor);
	SetHost(vHost);
}

/**
* Destruction
*
* @param VOID
* @return
*/
ServerComputerDoubleMouse::~ServerComputerDoubleMouse()
{
	DEBUG_PRINTF("");
}

/**
* Operation
*
* @param VOID
* @return
*/
VOID
ServerComputerDoubleMouse::Operation()
{
	DEBUG_PRINTF("");
	ServerComputer::Operation();
}

/**
* Construction
*
* @param Mouse* pMouse
* @param Keyboard* pKeyboard1
* @param Keyboard* pKeyboard2
* @param Monitor* pMonitor
* @param Host* pHost
* @return
*/
ServerComputerDoubleKeyboard::ServerComputerDoubleKeyboard(Mouse* pMouse, Keyboard* pKeyboard1, Keyboard* pKeyboard2, Monitor* pMonitor, Host* pHost) :
	ServerComputer(COMPUTERPART_DOUBLEKEYBOARD)
{
	DEBUG_PRINTF("");
	vector<Mouse*> vMouse;
	vector<Keyboard*> vKeyboard;
	vector<Monitor*> vMonitor;
	vector<Host*> vHost;
	vMouse.push_back(pMouse);
	vKeyboard.push_back(pKeyboard1);
	vKeyboard.push_back(pKeyboard2);
	vMonitor.push_back(pMonitor);
	vHost.push_back(pHost);
	SetMouse(vMouse);
	SetKeyboard(vKeyboard);
	SetMonitor(vMonitor);
	SetHost(vHost);
}

/**
* Destruction
*
* @param VOID
* @return
*/
ServerComputerDoubleKeyboard::~ServerComputerDoubleKeyboard()
{
	DEBUG_PRINTF("");
}

/**
* Operation
*
* @param VOID
* @return
*/
VOID
ServerComputerDoubleKeyboard::Operation()
{
	DEBUG_PRINTF("");
	ServerComputer::Operation();
}

/**
* Construction
*
* @param Mouse* pMouse
* @param Keyboard* pKeyboard
* @param Monitor* pMonitor1
* @param Monitor* pMonitor2
* @param Host* pHost
* @return
*/
ServerComputerDoubleMonitor::ServerComputerDoubleMonitor(Mouse* pMouse, Keyboard* pKeyboard, Monitor* pMonitor1, Monitor* pMonitor2, Host* pHost) :
	ServerComputer(COMPUTERPART_DOUBLEMONITOR)
{
	DEBUG_PRINTF("");
	vector<Mouse*> vMouse;
	vector<Keyboard*> vKeyboard;
	vector<Monitor*> vMonitor;
	vector<Host*> vHost;
	vMouse.push_back(pMouse);
	vKeyboard.push_back(pKeyboard);
	vMonitor.push_back(pMonitor1);
	vMonitor.push_back(pMonitor2);
	vHost.push_back(pHost);
	SetMouse(vMouse);
	SetKeyboard(vKeyboard);
	SetMonitor(vMonitor);
	SetHost(vHost);
}

/**
* Destruction
*
* @param VOID
* @return
*/
ServerComputerDoubleMonitor::~ServerComputerDoubleMonitor()
{
	DEBUG_PRINTF("");
}

/**
* Operation
*
* @param VOID
* @return
*/
VOID
ServerComputerDoubleMonitor::Operation()
{
	DEBUG_PRINTF("");
	ServerComputer::Operation();
}
/* EOF */